home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 12, No. 03 (1991-03)(MindCraft Publishing)(Side A).zip / Nibble Volume 12, No. 03 (1991-03)(MindCraft Publishing)(Side A).po / ALCHEMY.S < prev    next >
Text File  |  1996-12-24  |  11KB  |  641 lines

  1. *******************************
  2. * ALCHEMY Source code         *
  3. * by Jerry Jongerius          *
  4. * (C) 1991 by MindCraft Publ. *
  5. * Concord, MA   01742         *
  6. ******************************
  7. *
  8. *  MOVE PROGRAM UP
  9.           ORG $8000
  10. *
  11.           LDA #$96
  12.           STA $0C
  13.           STA $FD
  14.           LDA $03D1
  15.           BNE DOS33 
  16.           LDA #4
  17.           JSR $BEF5
  18.           BCC BUFROK
  19. MEMPROB   JMP $BE09
  20. BUFROK    CMP #$96
  21.           BEQ MOVEIT
  22.           LDA #12
  23.           BNE MEMPROB
  24. DOS33     LDX #$95 
  25.           STX $9D01 
  26.           STX $FD 
  27.           STA $AA57
  28.           JSR $A7D4
  29. MOVEIT    LDA #>END+1  
  30.           STA $FE
  31.           LDA #<END+1 
  32.           STA $FF
  33.           LDX #$03 
  34.           LDA #$00
  35.           STA $FC
  36.           STA $0B
  37.           TAY
  38. BL1       LDA ($FE),Y 
  39.           STA ($FC),Y
  40.           INY
  41.           BNE BL1
  42.           INC $FF
  43.           INC $FD
  44.           DEX
  45.           BPL BL1
  46. END       RTS
  47. ********************************
  48. *
  49.           ORG $9600
  50. *
  51. ********************************
  52. *
  53. * USR() FUNCTION DESCRIPTION 
  54. *
  55. ********************************
  56. *
  57. * USR(C2)                      GET ADDRESS OF LINE IN PAGE  
  58. * USR(-1),B                    SET PLOTTING PAGE
  59. * USR(-2),B,C                  CLEAR PAGE TO VALUE
  60. * USR(-3),A,A                  DISPLAY PAGE,FULL OR SPLIT
  61. * USR(-4),B,B                  SWITCH PAGES AROUND
  62. * USR(-5),B,C                  EOR PAGE WITH BYTE
  63. * USR(-6),B                    F/F L/R
  64. * USR(-7),B                    F/F U/D
  65. * USR(-8),B,C1,C2,C,C,S        CIRCLE DRAWER
  66. * USR(-9),B,C1,C2,C1,C2        BOX DRAWER
  67. *
  68. *     A = 1,2
  69. *     B = 1,2,3
  70. *     C = 0...255
  71. *     S = STEP VALUE
  72. *    C1 = 0...279
  73. *    C2 = 0...191
  74. *
  75. ********************************
  76. *
  77. * EQUATES
  78. *
  79. ********************************
  80. HGRZP     EQU $E6
  81. EVAL1     EQU $DD67
  82. SYNCHECK  EQU $DEBE
  83. CONFAC    EQU $E10C
  84. ILLQTYP   EQU $E199
  85. FLOATIN   EQU $E2F2
  86. FLOATINA  EQU $E301 
  87. COMBYTE   EQU $E74C
  88. ADDFAC    EQU $E7BE
  89. MULTFAC   EQU $E97F
  90. LOADFAC   EQU $EAF9
  91. PACFAC    EQU $EB2B
  92. CMPFAC    EQU $EBB2
  93. COSOFFAC  EQU $EFEA
  94. SINOFFAC  EQU $EFF1
  95. PLOTPOINT EQU $F457
  96. PLOTLINE  EQU $F53A
  97. GETXY     EQU $F6B9
  98. *
  99. ********************************
  100. *
  101. * ENTRY POINT
  102. *
  103. * FROM USR()
  104. *
  105. ********************************
  106. *
  107.           JSR CONFAC
  108.           LDA $A0
  109.           BMI NEGSUB
  110.           BNE ILLEGAL
  111.           LDA $A1
  112.           CMP #$C0 
  113.           BCS ILLEGAL 
  114.           STA $A1
  115.           ASL A
  116.           ASL A
  117.           STA $A0
  118.           ASL A
  119.           ROL A
  120.           ROL A
  121.           ORA $A0
  122.           AND #$1F
  123.           ORA HGRZP
  124.           PHA
  125.           AND #$00
  126.           ROR A
  127.           BIT $A1
  128.           BPL OVER1
  129.           ADC #$50
  130. OVER1     BVC OVER2 
  131.           ADC #$28
  132. OVER2     TAY
  133.           PLA
  134.           JMP FLOATIN
  135. *
  136. ********************************
  137. *
  138. * SKIP OVER CALCLINE
  139. *
  140. ********************************
  141. *
  142. NEGSUB    LDA $A1
  143.           EOR #$FF
  144.           CMP #$09 
  145.           BCS ILLEGAL 
  146.           ASL A 
  147.           TAX
  148.           LDA #<EXIT
  149.           PHA
  150.           LDA #>EXIT-1
  151.           PHA
  152.           LDA TABLE,X
  153.           PHA
  154.           INX 
  155.           LDA TABLE,X
  156.           PHA
  157.           RTS
  158. *
  159. ********************************
  160. *
  161. * EXIT
  162. *
  163. ********************************
  164. *
  165. EXIT      LDA HGRZP
  166.           LSR A
  167.           LSR A
  168.           LSR A
  169.           LSR A
  170.           LSR A
  171.           TAY
  172.           JMP FLOATINA
  173. *
  174. ********************************
  175. *
  176. * GET VALUES
  177. *
  178. ********************************
  179. *
  180. GETVAL4   LDA #$04
  181. GETVAL3   BIT $03A9
  182.           STA $4E
  183.           JSR COMBYTE 
  184.           TXA
  185.           BEQ ILLEGAL
  186.           CPX $4E
  187.           BCC PAGEOK
  188. ILLEGAL   JMP ILLQTYP
  189. PAGEOK    LSR $4E
  190.           BCS OVER3
  191.           ASL A
  192.           ASL A
  193.           ASL A
  194.           ASL A
  195.           ASL A
  196. OVER3     RTS
  197. *
  198. ********************************
  199. *
  200. * TABLE OF
  201. *
  202. * ENTRY POINTS
  203. *
  204. ********************************
  205. *
  206. TABLE     DDB SPP-1
  207.           DDB CPVA-1
  208.           DDB DP-1
  209.           DDB SP-1
  210.           DDB EPB-1
  211.           DDB LR-1
  212.           DDB UP-1
  213.           DDB CIR-1
  214.           DDB PB-1
  215.           SKP 2
  216. *******************************
  217. *
  218. * SET PLOTTING PAGE 
  219. *
  220. ********************************
  221. *
  222. SPP       JSR GETVAL4
  223.           STA HGRZP
  224.           RTS
  225. *
  226. ********************************
  227. *
  228. * CLEAR PAGE TO VALUE
  229. *
  230. ********************************
  231. *
  232. CPVA      JSR GETVAL4
  233.           PHA
  234.           JSR COMBYTE 
  235.           PLA
  236.           STA $A6
  237.           AND #$00
  238.           STA $A5
  239.           TAY
  240.           TXA
  241.           LDX #$20
  242. STORE1    STA ($A5),Y
  243.           INY
  244.           BNE STORE1
  245.           INC $A6
  246.           DEX
  247.           BNE STORE1
  248.           RTS
  249. *
  250. ********************************
  251. *
  252. * DISPLAY A PAGE
  253. *
  254. ********************************
  255. *
  256. DP        JSR GETVAL3+1 
  257.           STA $C057 
  258.           STA $C050
  259.           STA $C053,X 
  260.           JSR GETVAL3+1 
  261.           STA $C051,X
  262.           RTS
  263. *
  264. ********************************
  265. *
  266. * SWITCH PAGES
  267. *
  268. ********************************
  269. *
  270. SP        JSR GETVAL4
  271.           PHA
  272.           JSR GETVAL4 
  273.           STA $A8
  274.           PLA
  275.           STA $A6
  276.           CMP $A8
  277.           BEQ RTSJ1
  278.           AND #$00
  279.           STA $A5
  280.           STA $A7
  281.           TAY
  282.           LDX #$20
  283. STORE2    LDA ($A5),Y
  284.           PHA
  285.           LDA ($A7),Y 
  286.           STA ($A5),Y 
  287.           PLA
  288.           STA ($A7),Y 
  289.           INY
  290.           BNE STORE2
  291.           INC $A6
  292.           INC $A8
  293.           DEX
  294.           BNE STORE2
  295. RTSJ1     RTS
  296. *
  297. ********************************
  298. *
  299. * EOR PAGE
  300. *
  301. ********************************
  302. *
  303. EPB       JSR GETVAL4
  304.           PHA
  305.           JSR COMBYTE 
  306.           PLA
  307.           STA $A6
  308.           LDY #$00
  309.           STY $A5
  310.           STX $A7
  311.           LDX #$20
  312. STORE3    LDA ($A5),Y
  313.           EOR $A7
  314.           STA ($A5),Y
  315.           INY
  316.           BNE STORE3
  317.           INC $A6
  318.           DEX
  319.           BNE STORE3
  320.           RTS
  321. *
  322. ********************************
  323. *
  324. * HGR F/F L/R
  325. *
  326. ********************************
  327. *
  328. LR        JSR GETVAL4
  329.           STA $A9
  330.           LDA #$00
  331. L9        STA $A5
  332.           LDA $A9
  333.           STA $A6
  334.           LDA #$20
  335.           STA $A7
  336. L4        LDY #$27
  337. L1        LDA ($A5),Y
  338.           PHA
  339.           DEY
  340.           BPL L1
  341.           LDY #$27
  342. L3        PLA
  343.           LDX #$07
  344.           ROL A
  345.           ROL $A8
  346.           ROR A
  347. L2        ROR A
  348.           ROL $A8
  349.           DEX
  350.           BNE L2
  351.           LDA $A8
  352.           STA ($A5),Y
  353.           DEY
  354.           BPL L3
  355. *
  356.           INC $A6 
  357.           DEC $A7 
  358.           BNE L4
  359.           LDA $A5
  360.           ASL A
  361.           BNE L5   
  362.           LDA #$28
  363. L5        BCS L6
  364.           ASL A
  365.           BCC L7
  366.           LDA #$00
  367. L6        ASL A
  368.           BCC L8
  369.           RTS
  370. L8        SEC
  371. L7        ROR A
  372.           BCC L9
  373. *
  374. ********************************
  375. *
  376. * HGR F/F U/D
  377. *
  378. ********************************
  379. *
  380. UP        JSR GETVAL4
  381.           STA $A9
  382.           LDA #$D8
  383.           STA $A5
  384.           LDA #$F8
  385.           STA $A7
  386. L12       LDA $A9
  387.           STA $A6
  388.           CLC
  389.           ADC #$1F
  390.           STA $A8
  391.           LDA $A5
  392.           ADC #$28
  393.           STA $A5
  394.           LDA $A7
  395.           SEC
  396.           SBC #$28
  397.           STA $A7
  398.           LDX #$20
  399. L11       LDY #$27
  400. L10       LDA ($A5),Y
  401.           PHA
  402.           LDA ($A7),Y
  403.           STA ($A5),Y
  404.           PLA
  405.           STA ($A7),Y
  406.           DEY
  407.           BPL L10
  408.           INC $A6
  409.           DEC $A8
  410.           DEX
  411.           BNE L11
  412.           LDA $A5
  413.           CMP #$50
  414.           BNE L12
  415.           RTS
  416. *
  417. ********************************
  418. *
  419. * STORAGE FOR CIRCLE
  420. *
  421. ********************************
  422. *
  423. PLOTVAL   DS $01
  424. ENDVAL    DS $01
  425. *
  426. STOREXL   DS $01
  427. STOREXH   DS $01
  428. STOREY    DS $01
  429. *
  430. STOREXM   DS $01
  431. STOREYM   DS $01
  432. XMFAC     DS $05
  433. YMFAC     DS $05
  434. *
  435. ASX       DS $01
  436. ASY       DS $01
  437. *
  438. STEP      DS $05 
  439. FORNEXT   DS $05
  440. PIFOUR    DFB $80,$49,$0F,$DA,$A2
  441. *
  442. ********************************
  443. *
  444. * CIRCLE
  445. *
  446. ********************************
  447. *
  448. CIR       LDA HGRZP
  449.           PHA
  450.           JSR GETVAL4
  451.           STA HGRZP
  452.           JSR SYNCHECK 
  453.           JSR GETXY
  454.           STA STOREY
  455.           STY STOREXH
  456.           STX STOREXL
  457.           JSR COMBYTE
  458.           STX STOREXM
  459.           TXA
  460.           TAY
  461.           JSR FLOATINA
  462.           LDX #>XMFAC
  463.           LDY #<XMFAC
  464.           JSR PACFAC
  465.           JSR COMBYTE
  466.           STX STOREYM
  467.           TXA
  468.           TAY
  469.           JSR FLOATINA
  470.           LDX #>YMFAC
  471.           LDY #<YMFAC
  472.           JSR PACFAC
  473.           LDX STOREYM
  474.           LDA #$80
  475.           LDY #$40 
  476.           CPX STOREXM
  477.           BEQ CIRL0
  478.           LDA #$81
  479.           LDY #$64 
  480. CIRL0     STA PIFOUR
  481.           STY ENDVAL
  482.           JSR SYNCHECK
  483.           JSR EVAL1
  484.           LDX #>STEP
  485.           LDY #<STEP
  486.           JSR PACFAC 
  487.           BNE NOTZERO
  488.           JMP ILLQTYP 
  489. NOTZERO   TYA
  490.           LDX #$04
  491. CIRL1     STA FORNEXT,X
  492.           DEX
  493.           BPL CIRL1
  494. *
  495. ********************************
  496. *
  497. * START SUB
  498. *
  499. ********************************
  500. *
  501. *.CALC.X 
  502. STARTSUB  LDA #>FORNEXT
  503.           LDY #<FORNEXT
  504.           JSR LOADFAC
  505.           JSR COSOFFAC
  506.           LDA #>XMFAC
  507.           LDY #<XMFAC
  508.           JSR MULTFAC
  509.           JSR CONFAC
  510.           LDA $A1
  511.           STA ASX
  512. *.CALC.Y 
  513.           LDA #>FORNEXT
  514.           LDY #<FORNEXT
  515.           JSR LOADFAC
  516.           JSR SINOFFAC
  517.           LDA #>YMFAC
  518.           LDY #<YMFAC  
  519.           JSR MULTFAC
  520.           JSR CONFAC
  521.           LDA $A1
  522.           STA ASY
  523. *.CALC&PLOT.POINTS
  524.           LDA #$33
  525.           STA PLOTVAL
  526. *.FIGURE.X 
  527. STARTPLOT LDA STOREXL 
  528.           BIT PLOTVAL
  529.           BPL CIRL2
  530.           SEC
  531.           SBC ASX
  532.           TAX
  533.           LDA STOREXH
  534.           SBC #$00
  535.           TAY
  536.           JMP CIRL3 
  537. CIRL2     CLC
  538.           ADC ASX
  539.           TAX
  540.           LDA STOREXH
  541.           ADC #$00
  542.           TAY
  543. CIRL3     CPY #$01 
  544.           BCC CIRL4
  545.           BNE CIRL5
  546.           CPX #$18
  547.           BCS CIRL5
  548. *.FIGURE.Y
  549. CIRL4     LDA STOREY 
  550.           BIT PLOTVAL
  551.           BVC CIRL6
  552.           SEC
  553.           SBC ASY
  554.           BCC CIRL5
  555.           BCS CIRL7
  556. CIRL6     CLC
  557.           ADC ASY
  558.           BCS CIRL5
  559. CIRL7     CMP #$C0 
  560.           BCS CIRL5
  561. *
  562.           JSR PLOTPOINT
  563. *
  564. CIRL5     LDA PLOTVAL
  565.           CMP #$98
  566.           BNE ASLPV
  567.           LDA ASX
  568.           LDX ASY
  569.           STA ASY
  570.           STX ASX
  571.           LDA #$C8
  572.           STA PLOTVAL
  573.           LSR PLOTVAL 
  574. ASLPV     LDA PLOTVAL
  575.           ASL PLOTVAL
  576.           CMP ENDVAL
  577.           BNE STARTPLOT
  578.           LDA #>FORNEXT
  579.           LDY #<FORNEXT
  580.           JSR LOADFAC
  581.           LDA #>STEP
  582.           LDY #<STEP
  583.           JSR ADDFAC
  584.           LDX #>FORNEXT
  585.           LDY #<FORNEXT
  586.           JSR PACFAC
  587.           LDA #>PIFOUR 
  588.           LDY #<PIFOUR
  589.           JSR CMPFAC
  590.           CMP #$01
  591.           BEQ EXITCIR
  592.           JMP STARTSUB 
  593. EXITCIR   PLA
  594.           STA HGRZP
  595.           RTS
  596. *
  597. ********************************
  598. *
  599. * PLOT BOX
  600. *
  601. ********************************
  602. *
  603. PB        LDA HGRZP
  604.           PHA
  605.           JSR GETVAL4
  606.           STA HGRZP
  607.           JSR SYNCHECK
  608.           JSR GETXY
  609.           JSR PLOTPOINT 
  610.           JSR SYNCHECK
  611.           JSR GETXY
  612.           STX $A8
  613.           STY $A9
  614.           STA $AA
  615.           LDA $E0
  616.           STA $A5
  617.           LDA $E1
  618.           STA $A6
  619.           LDA $E2
  620.           STA $A7
  621.           LDA $A8 
  622.           LDX $A9 
  623.           LDY $A7
  624.           JSR PLOTLINE
  625.           LDA $A8
  626.           LDX $A9
  627.           LDY $AA
  628.           JSR PLOTLINE
  629.           LDA $A5
  630.           LDX $A6
  631.           LDY $AA
  632.           JSR PLOTLINE
  633.           LDA $A5
  634.           LDX $A6
  635.           LDY $A7 
  636.           JSR PLOTLINE
  637.           PLA
  638.           STA HGRZP
  639.           RTS
  640.